// FTopMode.h: interface for the FTopMode class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_FTOPMODE_H__631BDFE1_8528_46A1_9978_8CC60017670D__INCLUDED_)
#define AFX_FTOPMODE_H__631BDFE1_8528_46A1_9978_8CC60017670D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "FSelect.h"
class FTopMode  
{
public:
    int GetLastErro( );
	DWORD GetNoteCount();
	FTopMode();
	virtual ~FTopMode();

	int Create(PCHAR TFileName);
	int UseDataBase(PCHAR TFileName);
	int AddNew();
	int Update();
	void Edit();
	int GetFiledValue(PCHAR Filed,INT& Value);
	int GetFiledValue(PCHAR Filed,SHORTINT& Value);
	int GetFiledValue(PCHAR Filed,PCHAR Value);
	int GetFiledValue(PCHAR Filed,DATA& Value);
	int GetFiledValue(PCHAR Filed,SBOOL& Value);

	int GetFiledValue(PCHAR Filed,FLOAT& Value);

	int GetFiledValue(PCHAR Filed,TEXT&  Value);
	int GetFiledValue(PCHAR Filed,IMAGE& Value);
	int GetFiledValue(PCHAR Filed,BIN&   Value);
	int GetFiledValue(PCHAR Filed,BINFILE&   Value);
	int  GetFiledValue(PCHAR Filed,CString& Value);


	int SetFiledValue(PCHAR Filed,INT Value);
	int SetFiledValue(PCHAR Filed,SHORTINT Value);
	int SetFiledValue(PCHAR Filed,PCHAR Value);
	int SetFiledValue(PCHAR Filed,DATA Value);
	int SetFiledValue(PCHAR Filed,SBOOL Value);
	int SetFiledValue(PCHAR Filed,TEXT  Value);
	int SetFiledValue(PCHAR Filed,IMAGE Value);
	int SetFiledValue(PCHAR Filed,BIN   Value);
	int SetFiledValue(PCHAR Filed,BINFILE   Value);

	int SetFiledValue(PCHAR Filed,FLOAT Value);
	int SetFiledValue(PCHAR Filed,CString Value);
			
	void Close();
	int MoveNext();
	int MoveLast();
	int MoveFirst();
	int MovePrevious();


	int  BeginCreateStrute();
	int  SetStrute(PCHAR DataTypeName,PCHAR FieldName,SHORTINT Smainflag,SINT SMaxSize);
	int  EndCreateStrute();



	int  BeginAddBinFile(PCHAR piFiled,BINFILE piBufferLen,FDPROC Rmsg,DWORD& poFiledID,void* p);
	int  ContinueAddBinFile(PCHAR Filed,string& piBuffer);
	

	int  BeginGetBinFile(PCHAR piFiled,BINFILE& poBufferLen);
	int  CoutinueGetBinFile(PCHAR piFiled,string&  poBuffer);
	int  OnEndAddGegBinFile();

	int  EasyUseDataBase(TCHAR *TFileName);
	int  EasyWriteData(void *buf,int buflen);
	void EasyClose( );

	deque <string> dBinFileBuffers;//文件类型数据缓冲区
	BINFILE BBinFileLen;//文件类型长度
	bool    bRunFlag;//线程同步ID
	/*
	ture :线程运行中
	false:线程已停止运行
	线程是否正常运行，是否出现错误信息，需查看ISucErroFlag标志
	*/
	INT     ISucErroFlag;//线程运行中信息ID
	/*
	TRUE:线程成功结束。线程完成任务正常退出。
	2:   写缓冲区溢出。
	3:   读缓冲区溢出。
	4:   写缓冲区缺数据。
	5:   读缓冲区缺数据。
	-1:  写数据库文件错误，线程异常退出。
	-2:  读数据库文件错误，线程异常退出。
	-3:  写缓冲区超过一定时间一直没有数据，线程认为异常退出。可能是网络出现异常。
	-4:  读缓冲区超过一定时间超过最大值，线程认为异常退出。可能是网络出现异常。
	-5:  读缓冲区数据长度校验错误
	-6:  已有线程在运行
	-7:  线程已异常终止
	-8:  字段名不一致
	-9： 字段数据长度不一致
	-10: 不在添加状态，请运行AddNew()函数
const short  RUNING=-6;
const short  ERROSTOP=-7;
const short  FILEDERRO=-8;
const short  BINFILELENERRO=-9;
const short  BINFILEADDFLAGERRO=10;
	*/


	TCHAR    *TBinFileFiled;//文件类型字段名
	INT      IBinFileMaxId;//文件类型最大ID
	FDPROC   OutBinFileMsg;//回调函数变量。供线程返回信息用
	char*    OnOutBinFileMsg();//输出信息
	void     OutMessage(TCHAR *piMsg);//记录信息
	bool IsUseDataBase( );

	void*    vpBinFileParent;

	BINFILE BWsize;
	BINFILE BRsize;



	int Refurbish();
	int Delete();

	int Open(PCHAR Fileds,PCHAR While);
	void SetJMflag(bool flag);//设置模糊查询和精确查询
	bool Isiterate (PCHAR Fileds,PCHAR Value);

	int GetFiledsSize();
	string GetDataBaseErroMsg(int ErroId);



	

protected:
	int GetLastID( );
	FSelect Fmidmode;
	string   sData;
	vector <string> vFillFields;
	vector <string> vFillDbtFields;
	vector <FIELDDEF>  vFileds;

	short int GERROID;

	

	int SetFiledValue(PCHAR Filed,void* Value,int size);
	int ReadBinData(PCHAR Filed,BINARY BinData,PCHAR& Buffer,int& Len);
	int GetFiledValue(PCHAR Filed,BINARY&  Value);
	int SetFiledValue(PCHAR Filed,BINARY  Value);
	int IsFiledId();
	int IsFiledId(PCHAR Type,PCHAR Filed);

};

#endif // !defined(AFX_FTOPMODE_H__631BDFE1_8528_46A1_9978_8CC60017670D__INCLUDED_)
